package com.biz.primus.ms.member.dao.po;

import com.biz.primus.model.member.enums.AddressTypes;
import com.biz.primus.model.member.enums.SexTypes;
import com.biz.primus.ms.base.jpa.po.BaseEntityPKIncrement;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.persistence.Column;
import javax.persistence.Convert;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 会员地址
 *
 * @author jun.liu
 * @date 2017年10月22日
 * @reviewer
 * @see
 */
@Entity
@Table(name = "member_address")
@Data
@EqualsAndHashCode(callSuper = true)
public class MemberAddress extends BaseEntityPKIncrement
{

    /**
     * 地址别名
     */
    @Column(name = "address_name", length = 32)
    private String addressName;

    /**
     * 性别
     */
    @Convert(converter = SexTypes.Converter.class)
    @Column
    private SexTypes sexType = SexTypes.secret;

    /**
     * 收货人姓名
     */
    @Column(name = "consignee_name", nullable = false, length = 32)
    private String consigneeName;

    /**
     * 收货人电话
     */
    @Column(name = "mobile", nullable = false, length = 11)
    private String mobile;

    /**
     * 详细收货地址
     */
    @Column(name = "detail_address", nullable = false)
    private String detailAddress;

    /**
     * 纬度
     */
    @Column(columnDefinition = "DECIMAL(9,6)")
    private BigDecimal loginLat;

    /**
     * 经度
     */
    @Column(columnDefinition = "DECIMAL(9,6)")
    private BigDecimal loginLon;

    /**
     * 送达目的地
     */
    @Column(name = "destination")
    private String destination;

    /**
     * 最后一次登录 （或者是默认地址）
     */
    @Column
    private Boolean defaultAddress = true;

    /**
     * cityId
     **/
    @Column
    private Long cityId;

    /**
     * 城市名称
     */
    @Column(name = "city_name", length = 32)
    private String cityName;

    /**
     * provinceId
     **/
    @Column
    private Long provinceId;

    /**
     * 省份名称
     */
    @Column(name = "province_name", length = 32)
    private String provinceName;

    /**
     * districtId
     **/
    @Column
    private Long districtId;

    /**
     * 区域名称
     */
    @Column(name = "district_name", length = 32)
    private String districtName;

    /**
     * 收货时间段
     */
    @Column(length = 255)
    private String time;

    /**
     * 地址类型
     */
    @Convert(converter=AddressTypes.Converter.class)
    @Column
    private AddressTypes addressType = AddressTypes.other;

    /**
     * 是否是临时收货地址
     */
    @Convert(converter=AddressTypes.Converter.class)
    @Column
    private AddressTypes tempAddress = AddressTypes.NOLABEL;

    /**
     * 关联会员详情Member对象
     */
    @Column(name = "memberId")
    private Long memberId;

    /**
     * 关联会员地址标签 标签编号
     */
    @ApiModelProperty("关联会员地址标签id 标签编号")
    private Long memberrAddressLabelId;

    /** 标签名称 */
    private String labelName;

    /** 最后一次使用该地址 下订单的时间，用于返回地址时 辅助排序使用*/
    @ApiModelProperty("最后一次使用该地址 下订单的时间，用于返回地址时 辅助排序使用")
    private LocalDateTime lastOrderTime;

}
